﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QuizzAdminData;
using KWIS9000CLIENT;

namespace QuizGUI
{
    /// <summary>
    /// GUI voor de presentator
    /// </summary>
    /// <author>Werner Goossens</author>
    public partial class PresentatorGUI : Form
    {
        private List<Deelnemer> deelnemers = new List<Deelnemer>();
        private int vraagIndex;
        private int rondeTeller;
        private int vraagTeller;
        private Random random = new Random();
        
        private KwisClient client;
        private List<Vraag> vragen = new List<Vraag>();

        public PresentatorGUI()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Load event, zet een server op.
        /// </summary>
        /// <author>Werner Goossens</author>
        private void PresentatorGUI_Load(object sender, EventArgs e)
        {
            client = new KwisClient();
            client.connect("presentator");
        }

        
        /// <summary>
        /// Klik event om naar een willekeurige volgende vraag te gaan.
        /// </summary>
        /// <author>Werner Goossens</author>
        private void bnVolgendeVraag_Click(object sender, EventArgs e)
        {
            vragen.RemoveAt(vraagIndex);

            if (vragen.Count > 0)
            {
                vraagIndex = random.Next(0, vragen.Count);
                tbVraag.Text = vragen[vraagIndex].Vraag_tekst;

                tstlVraag.Text = vraagTeller++.ToString();
            }
            else
            {
                tbVraag.Text = "Geen vragen meer beschikbaar.";
            }
        }

        /// <summary>
        /// Klik event om naar een willekeurige volgende vraag te gaan.
        /// </summary>
        /// <author>Werner Goossens</author>
        private void bnVolgendeRonde_Click(object sender, EventArgs e)
        {
            rondeTeller++;
            vraagTeller = 1;

            tstlRonde.Text = rondeTeller.ToString();
            tstlVraag.Text = vraagTeller.ToString();

            bnVolgendeVraag_Click(sender, e);
        }

        /// <summary>
        /// Start de admin tool om databank-bewerkingen te kunnen verrichten
        /// </summary>
        /// <author>Werner Goossens</author>
        private void tsmiAdminTool_Click(object sender, EventArgs e)
        {
            QuizzAdmin.MainForm frm = new QuizzAdmin.MainForm();
            frm.Show();
            this.Visible = false;

            if (frm.Disposing)
            {
                this.Visible = true;
            }
        }

        /// <summary>
        /// Sluit de applicatie op voorwaarde dat er geen kwis aan de gang is.
        /// </summary>
        /// <author>Werner Goossens</author>
        private void tsmiAfsluiten_Click(object sender, EventArgs e)
        {
            if (!startToolStripMenuItem.Enabled)
            {
                DialogResult msg = MessageBox.Show("De kwis is nog gaande, gelieve eerste de kwis te stoppen alvorens af te sluiten",
                    "Opgelet!", MessageBoxButtons.OK ,MessageBoxIcon.Warning);
            }
            else
            {
                Application.Exit();
            }
        }

        /// <summary>
        /// Klik event om het kwistype te selecteren
        /// </summary>
        /// <author>Werner Goossens</author>
        private void kwistypeToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
        {
            if (blokkenToolStripMenuItem.Checked)
            {
                zaalkwisToolStripMenuItem.Checked = false;
            }
            else if (zaalkwisToolStripMenuItem.Checked)
            {
                blokkenToolStripMenuItem.Checked = false;
            }           
        }

        /// <summary>
        /// Klik event om een kwis te starten.
        /// </summary>
        /// <author>Werner Goossens</author>
        private void startToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dResult = MessageBox.Show("Als de kwis gestart is kunnen geen instellingen meer gewijzigd worden,"
                                + "bent u zeker dat u wilt verdergaan?", "Opgelet!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (dResult == DialogResult.Yes)
            {
                toolToolStripMenuItem.Enabled = false;
                kwistypeToolStripMenuItem.Enabled = false;
                startToolStripMenuItem.Enabled = false;

                stopToolStripMenuItem.Enabled = true;
            }
        }

        /// <summary>
        /// Klik event om een kwis te stoppen
        /// </summary>
        /// <author>Werner Goossens</author>
        private void stopToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dResult = MessageBox.Show("Als de u de kwis stopt worden de gegevens weggeschreven en kan de kwis niet meer hervat worden, "
                                + "bent u zeker dat u wilt verdergaan?", "Opgelet!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            
            if (dResult == DialogResult.Yes)
            {
                toolToolStripMenuItem.Enabled = true;
                kwistypeToolStripMenuItem.Enabled = true;
                startToolStripMenuItem.Enabled = true;

                stopToolStripMenuItem.Enabled = false;
            }

            //todo wegschrijven gegevens
        }

        /// <summary>
        /// update de GUI wanneer deze gewijzigd wordt
        /// </summary>
        /// <author>Werner Goossens</author>
        private void updateGui()
        { 

        }
    }
}
